package com.cleaningcloud.cld.service.mini;

import com.cleaningcloud.cld.domain.dto.CldMaterialAllocateDto;
import com.cleaningcloud.cld.domain.dto.CldMaterialConsumeDto;
import com.cleaningcloud.cld.domain.mini.MySupplies;
import com.cleaningcloud.cld.domain.vo.CldTeamMemberDetailsVo;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface IMiniMaterialService {


    /**
     * 物资下发
     *
     * @param cldMaterialAllocateDto
     * @return
     */
    int materialsIssue(CldMaterialAllocateDto cldMaterialAllocateDto);

    /**
     * 物资下发撤销
     *
     * @param materialAllocateId
     * @return
     */
    int materialsRevocation(Long materialAllocateId);


    /**
     * 确认领取
     *
     * @param materialAllocateId
     * @return
     */
    int materialsConfirmCollection(Long materialAllocateId);


    /**
     * 物资报损提交
     *
     * @param cldMaterialConsumeDto
     * @return
     */
    int materialsConsume(CldMaterialConsumeDto cldMaterialConsumeDto);

    /**
     * 报损列表 我的报损 员工报损
     *
     * @param map
     * @return
     */
    List<Map<String, Object>> selectSuppliesConsumeList(Map<String, Object> map);

    /**
     * 按日查询消耗列表
     *
     * @param map
     * @return
     */
    List<Map<String, Object>> selectDaySuppliesConsumeList(Map<String, Object> map);

    /**
     * 月消耗累计
     *
     * @param map
     * @return
     */
    BigDecimal getSuppliesConsumeMonthlyTotal(Map<String, Object> map);

    /**
     * 我的物资查询
     *
     * @param projectPostId
     * @return
     */
    List<MySupplies> selectMySupplies(Long projectPostId);


    /**
     * 员工库存
     *
     * @param projectId
     * @return
     */
    List<CldTeamMemberDetailsVo> getEmployeeInventory(Long projectId);


    /**
     * 月消耗累计
     *
     * @param map
     * @return
     */
    List<Map<String, Object>> getEmployeeInventoryByCommodityId(Map<String, Object> map);
}
